<?php
	/**
	 * ================================================================
	 * @authors liuqinglin 
	 * @email (2961181429@qq.com) 
	 * @https://my.oschina.net/shp32131
	 * @date    2016-12-01 11:38:29
	 * 文件名:View.class.php
	 * 概要: 安装程序中的用户表单界面输出类.
	 *==================================================================*/
	class View{
		// metchod是指定表单的提交方法，action是指定表单提交的位置，class指定表单的样式类
		private $method;
		private $action;
		private $class;
		//==========================================
		// 参数: metchod是指定表单的提交方法，action是指定表单提交的位置，class指定表单的样式类
		//==========================================	
		public function __construct($method="POST", $action="index.php", $class="white-box")
		{
			$this->method=$method;
			$this->action=$action;
			$this->class=$class;
		}
		//==========================================
		// 函数: echo_agreement()
		// 返回:	 输出安装协议说明
		//==========================================
		public function echo_agreement()
		{
			$fc.='<div class="body-box tip-msg">';
			$fc.='请阅读以下信息后进行安装.';
			$fc.='</div>';
			$fc.='<form method="'.$this->method.'" action="'.$this->action.'" class="'.$this->class.'">';
			$fc.='<div class="body-box">';
			$fc.='<div class="center red-font">欣艺公司内容系统安装说明</div>';
			$fc.='<div class="license">';
			$fc.='<ol style="list-style:none">';
			if(!file_exists("./license.txt"))
			{
				$fc.='<li>当前目录(install/license.txt)文件不存在</li>'.'</ol>';
			}
			else
			{
				$fp=fopen("./license.txt", "r");
				while(!feof($fp))
				{
					$fc.='<li>'.fgets($fp).'</li>';
				}
				fclose($fp);
			}
			$fc.='</ol>';	
			$fc.='</div></div>';
			$fc.='<div class="center body-box">';
			$fc.='<input type="hidden" name="step" value="2">';
			$fc.='<input type="submit" class="button" value="开始安装">';
			$fc.='</div>';
			$fc.='</form>';
			return $fc;	
		}
		//==========================================
		// 函数: echo_check_results()
		// 返回:	 输出系统安装环境检查结果
		//==========================================
		public function echo_check_results($items)
		{
			$ok=true;
			$fc.='<div class="body-box tip-msg">检查系统环境和文件目录权限是否正确</div>';
			$fc.='<form method="'.$this->method.'" action="'.$this->action.'" class="'.$this->class.'">';
			
			$fc.='<ol>';
			$fc.='<li class="light-row" style="font-size:14px;font-weight:blod"><b>';
			$fc.='<span>当前系统环境&nbsp;：</span>';
			$fc.='</b></li>';
			//1. 操作系统检测
			$fc.='<li class="dark-row">';
			$fc.='<span>操作系统：</span>';
			$os=explode(" ", php_uname());
			//php_uname=>Windows NT PC-LIUQINGLIN 10.0 build 14393 (Windows 10) AMD64
			if($os[0]=='Windows'|$os[0]=='Linux')
			{
				$fc.='<span>'.$os[0].'</span>';
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else 
			{
				$fc.='<span>'.$os[0].'</span>';
				$fc.='<span class="red-font">&nbsp;操作系统不支持</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;		
			}
			$fc.='</li>';
			//2. web服务器检测
			$fc.='<li class="light-row">';
			$fc.='<span>WEB服务器:</span>';
			$server=explode(" ",$_SERVER['SERVER_SOFTWARE']);
			$serverName=explode('/', $server[0]);
			if($serverName[0]=='Apache'|$serverName[0]=='Linux')
			{
				$fc.='<span>'. $serverName[0].' '.$serverName[1].'</span>';
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span>'. $serverName[0].' '.$serverName[1].'</span>';
				$fc.='<span class="red-font">&nbsp;web服务器不支持</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;			
			}
			$fc.='</li>';
			//3. php版本检查
			$fc.='<li class="dark-row">';
			$fc.='<span>PHP 版本&nbsp;:</span>';
			$fc.='<span>'.phpversion().'</span>';
			if(phpversion() >= '5.2.0')
			{
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;php版本太低</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;
			}
			$fc.='</li>';
			//4. php数据库操作扩展检测
			$fc.='<li class="light-row">';
			$fc.='<span>mysqli/pdo扩展：</span>';
			$fc.='<span>';
			if(extension_loaded('mysqli'))
			{ 
				$fc.='mysqli(√)';	
			}
			else
			{
				$fc.='mysqli(×)';
			}
			$fc.='&nbsp;&nbsp;';
			if(extension_loaded('pdo'))
			{ 
				$fc.='pdo(√)';	
			}
			else
			{
				$fc.='pdo(×)';
			}
			$fc.='</span>';
			if(extension_loaded('pdo') || extension_loaded('mysqli'))
			{
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不能支持数据库扩展</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;
			}
			$fc.='</li>';
			//5. json扩展
			$fc.='<li class="dark-row">';
			$fc.='<span>JSON 扩展:</span>';
			$fc.='<span>';
			if(extension_loaded('json'))
			{ 
				$fc.='√';	
			}
			else
			{
				$fc.='×';
			}
			$fc.='</span>';
			if(extension_loaded('json'))
			{
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不支持json</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$fc.='<span><a href="http://pecl.php.net/package/json" target="_blank">安装 PECL扩展</a></span>';
				$ok=false;
			}
			$fc.='</li>';
			//6. gd扩展
			$fc.='<li class="light-row">';
			$fc.='<span>GD 扩展:</span>';
			$fc.='<span>';
			$stas=false;
			if(extension_loaded('gd'))
			{ 
				$fc.='√&nbsp;&nbsp;(支持';
				if (imagetypes() & IMG_PNG)
				{
					$fc.='png&nbsp;';
					$stas=true;
				}
				if (imagetypes() & IMG_GIF)
				{
					$fc.='gif&nbsp;';
					$stas=true;
				}
				if (imagetypes() & IMG_JPEG)
				{
					$fc.='jpg&nbsp;';
					$stas=true;
				}
				$fc.=")";
			}
			else
			{
				$fc.='×';
			}
			$fc.='</span>';
			if(extension_loaded('gd') && $stas)
			{
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不支持缩略图和水印</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;
			}
			$fc.='</li>';
			//7.远程文件
			$fc.='<li class="dark-row">';
			$fc.='<span>远程文件打开:</span>';
			$fc.='<span>';
			if(ini_get('allow_url_fopen'))
			{ 
				$fc.='√';	
			}
			else
			{
				$fc.='×';
			}
			$fc.='</span>';
			if(ini_get('allow_url_fopen'))
			{
				$fc.='<span>&nbsp;通过</span>';
				$fc.='<span><img src="images/correct.gif" /></span>';
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不支持保存远程图片</span>';
				$fc.='<span><img src="images/error.gif" /></span>';
				$ok=false;
			}
			$fc.='</li>';
			//8.框架入口文件是否可写
			$fc.='<li class="light-row">';
			$fc.='<span>'.$items['index'].'文件：</span>';
			$fc.='<span>';
			if( is_writable($items['index']))
			{
				$fc.='<span>可写</span>';
				$fc.='<img src="images/correct.gif" />';	
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不可写&nbsp;</span>';
				$fc.='<img src="images/error.gif" />';
				$ok=false;
			}
			$fc.='</span>';
			$fc.='</li>';
			//9.配置文件
			$fc.='<li class="dark-row">';
			$fc.='<span>'.$items['db_config_file'].'文件:</span>';
			$fc.='<span>';
			if( is_writable($items['db_config_file']))
			{
				$fc.='<span>可写</span>';
				$fc.='<img src="images/correct.gif" />';	
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不可写&nbsp;</span>';
				$fc.='<img src="images/error.gif" />';
				$ok=false;
			}
			$fc.='</span>';
			$fc.='</li>';
			//10.缓存目录
			$fc.='<li class="light-row">';
			$fc.='<span>'.$items['cacheDir'].'目录:</span>';
			$fc.='<span>';
			if( is_writable($items['cacheDir']))
			{
				$fc.='<span>可写</span>';
				$fc.='<img src="images/correct.gif" />';	
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不可写&nbsp;</span>';
				$fc.='<img src="images/error.gif" />';
				$ok=false;
			}
			$fc.='</span>';
			$fc.='</li>';
			//11.上传目录
			$fc.='<li class="dark-row">';
			$fc.='<span>'.$items['uploadDir'].'目录:</span>';
			$fc.='<span>';
			if( is_writable($items['uploadDir']))
			{
				$fc.='<span>可写</span>';
				$fc.='<img src="images/correct.gif" />';	
			}
			else
			{
				$fc.='<span class="red-font">&nbsp;不可写&nbsp;</span>';
				$fc.='<img src="images/error.gif" />';
				$ok=false;
			}
			$fc.='</span>';
			$fc.='</li>';
			$fc.='</ol>';

			$fc.='<div class="center body-box">';
			$fc.='<input type="hidden" name="step" value="3">';
			if($ok)
			{
				$fc.='<input type="button" class="button" value="上一步" onclick="history.back()">';
				$fc.='<input type="submit" class="button" value="下一步" >';
			}
			else
			{
				$fc.='<input type="button" class="button" value="请检查安装环境" onclick="history.back()">';
			}
			$fc.='</div>';
			$fc.='</form>';

			return $fc;
		}

		//==========================================
		// 函数: set_db_form($info)
		// 功能: 获取数据库配置表单
		// 参数: info是安装过程中的提示信息，error是错误报告的样式类
		// 返回: 数据库配置表单界面字符串
		//==========================================
		public function set_db_form($info)
		{
			$fc.='<div class="body-box tip-msg">'.$info.'</div>';
			$fc.='<form method="'.$this->method.'" action="'.$this->action.'" class="'.$this->class.'">';
			$fc.='<ul>';

			$fc.='<li class="dark-row">';
			$fc.='<span class="col_width">数据库主机名称</span>';
			$fc.='<input type="text" class="text-box" name="hostname" value="" autocomplete="off" required>';
			$fc.='数据库服务器地址, 一般为 localhost';
			$fc.='</li>';

			$fc.='<li class="light-row">';
			$fc.='<span class="col_width">数据库用户名</span>';
			$fc.='<input type="text" class="text-box" name="username" value="" required>';	
			$fc.='数据库账号用户名,默认为root';
			$fc.='</li>';

			$fc.='<li class="dark-row">';
			$fc.='<span class="col_width">数据库密码</span>';
			$fc.='<input type="password" class="text-box" name="password" value="" autocomplete="off">';	
			$fc.='数据库连接密码';
			$fc.='</li>';

			$fc.='<li class="light-row">';
			$fc.='<span class="col_width">选择数据库连接驱动</span>';
			$fc.='<input type="radio" name="dbdriver" value="pdo" />&nbsp;pdo&nbsp;&nbsp;&nbsp;&nbsp;';
			$fc.='<input type="radio" name="dbdriver" checked value="mysqli" />&nbsp;mysqli&nbsp;&nbsp;&nbsp;&nbsp;';
			//$fc.='系统支持pdo和mysqli两种';
			$fc.='</li>';

			$fc.='<li class="light-row">';
			$fc.='<span class="col_width">数据库名称</span>';
			$fc.='<input type="text" class="text-box" name="database" required>';	
			$fc.='数据库名称,数据库必须已存在(请先创建一个数据库再安装)';
			$fc.='</li>';

			$fc.='<li class="dark-row">';
			$fc.='<span class="col_width">表名前缀</span>';
			$fc.='<input type="text" class="text-box" name="dbprefix" required>';
			$fc.='数据表的前缀';
			$fc.='</li>';

			$fc.='</ul>';
			$fc.='<div class="center body-box">';
			$fc.='<input type="hidden" name="step" value="4">';
			$fc.='<input type="reset" class="button" value="重置" >';
			$fc.='<input type="button" class="button"  value="上一步" onclick="history.back()">';
			$fc.='<input type="submit" class="button"  value="下一步" >';
			$fc.='</div>';
			$fc.='</form>';
			return $fc;	
		}
		//==========================================
		// 函数: getAdminForm($info,$error="tip-msg")
		// 功能: 添写管理员用户名和密码的表单
		// 参数: info是安装过程中的提示信息，error是错误报告的样式类
		// 返回: 管理员添加表单界面字符串
		//==========================================
		public function set_admin_form($info,$error="tip-msg")
		{
			$fc.='<div class="body-box '.$error.'">'.$info.'</div>';
			$fc.='<form method="'.$this->method.'" action="'.$this->action.'" class="'.$this->class.'">';
			$fc.='<ul>';

			$fc.='<li class="light-row liimg">';
			$fc.='<span class="col_width">管理员帐号</span>';
			$fc.='<input type="text" class="text-box" name="name">';
			$fc.='</li>';
			
			$fc.='<li class="dark-row liimg">';
			$fc.='<span class="col_width">管理员密码</span>';
			$fc.='<input type="password" class="text-box" name="password">';
			$fc.='</li>';

			$fc.='<li class="light-row liimg">';
			$fc.='<span class="col_width">重复密码</span>';
			$fc.='<input type="password" class="text-box" name="repassword">';	
			$fc.='</li>';

			$fc.='<li class="dark-row liimg">';
			$fc.='<span class="col_width">管理员邮箱</span>';
			$fc.='<input type="text" class="text-box" name="email">';	
			$fc.='</li>';

			$fc.='<li class="light-row liimg">';
			$fc.='<span class="col_width">管理员电话</span>';
			$fc.='<input type="text" class="text-box" name="phone">';	
			$fc.='</li>';

			$fc.='</ul>';
			$fc.='<div class="center body-box">';
			$fc.='<input type="hidden" name="step" value="5">';
			$fc.='<input type="button" class="button" value="上一步" onclick="history.back()">';
			$fc.='<input type="submit" class="button" value="下一步" >';
			$fc.='</div>';
			$fc.='</form>';
			return $fc;	
		}
		//==========================================
		// 函数: echo_install_messages($message, $install_state)
		// 功能: 安装信息显示的表单界面
		// 参数: $message是安装的提示信息，install_state安装的成功或失败的状态信息
		// 返回: 安装信息显示界面字符串
		//==========================================
		function echo_install_messages($message, $install_state)
		{
			$fc="";
			$fc.='<div class="body-box tip-msg">';
			$fc.='安装信息显示！！';
			$fc.='</div>';
			$fc.='<div class="body-box">';
			$fc.='<div class="license">';
			$fc.=$message;
			$fc.='</div></div>';
			$fc.='<div class="center body-box">';
			$fc.='<form method="'.$this->method.'" action="'.$this->action.'">';
			if($install_state)
			{
				$fc.='<input type="hidden" name="step" value="6">';
				$fc.='<input type="submit" class="button" value="安装成功!点击进入首页" >';
			}
			else
			{
				$fc.='<input type="button" class="button" value="安装失败，请返回" onclick="history.back()">';
			}	
			$fc.='</form>';
			$fc.='</div>';
			return $fc;	
		}

}
?>

